package com.itheima.reggie.common;

/**
 * 基于ThreadLocal封装工具类，用户保存和获取当前登录用户id
 *
 *    用来管理ThreadLocal对象的类.
 *       有可能开发的时候一个线程中 有多个数据要共享
 *         每个共享数据需要独立的 ThreadLocal对象.
 *          ThreadLocal<Long> 泛型是里面存的数据的类型
 * @version: 1.0
 */
public class BaseContext {
    // 根据咱们业务  现在需要一个保存 当前线程 登录id 的ThreadLocal
    // 在这里定义一个 静态常量  静态--类名直接调用  常量--这个对象一旦创建不能改变
    private static final ThreadLocal<Long> THREAD_LOCAL_USER_ID = new ThreadLocal<>();
    // ctrl+shift+u  小写变大写

    // 在使用的地方  BaseContext.THREAD_LOCAL_USER_ID.set(...)
    //    BaseContext.THREAD_LOCAL_USER_ID.get()

    /**
     * BaseContext.THREAD_LOCAL_USER_ID.set(...)
     *    把直接调用 封装一个set方法
     *      在当前的线程存储一个id
     */
    public static void setCurrentId(Long id){
        THREAD_LOCAL_USER_ID.set(id);
    }

    /**
     * BaseContext.THREAD_LOCAL_USER_ID.get()
     *     把直接获取方法 封装成了一个get方法
     */
    public static Long getCurrentId(){
        return THREAD_LOCAL_USER_ID.get();
    }

}